import Vue from 'vue'
import 'normalize.css/normalize.css'// A modern alternative to CSS resets

import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import '@/styles/index.scss' // global css

import App from './App'
import router from './router'
import store from './store'

import './permission' // permission control
import './icons' // icon

import * as filters from './filters' // global filters

Vue.use(Element, {
  size: 'medium' // set element-ui default size
})

// register global utility filters.
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

Vue.config.productionTip = false

/** 自定义权限指令 **/
Vue.directive('roles', {
  // 做绑定的准备工作
  // 比如添加事件监听器，或是其他只需要执行一次的复杂操作
  bind: function(el, binding) {
    if (!Vue.prototype.$_has(binding.value)) {
      el.parentNode.removeChild(el)
    }
  }
  // update: function (newValue, oldValue) {
  // 根据获得的新值执行对应的更新
  // 对于初始值也会被调用一次
  // },
  // unbind: function () {
  // 做清理工作
  // 比如移除在 bind() 中添加的事件监听器
  // }
})
// 权限检查方法--(接口权限)
Vue.prototype.$_has = function(value) {
  var isExist = false
  const buttonpermsStr = sessionStorage.getItem('buttonroutes')
  if (buttonpermsStr === undefined || buttonpermsStr == null) {
    return false
  }
  const buttonperms = JSON.parse(buttonpermsStr)
  if (buttonperms === 'all') {
    isExist = true
  } else {
    if (buttonperms.indexOf(value) > -1) {
      isExist = true
    }
  }
  return isExist
}
/** 自定义权限指令   **END  **/

new Vue({
  el: '#app',
  router,
  store,

  // 状态操作方法
  methods: {

    /**
     * 普通提示
     */
    message(message, type) {
      this.$message({
        showClose: true,
        message: message,
        type: type
      })
    }

  },
  template: '<App/>',
  components: { App }
})
